Q: EnterMovies への呼び出しを使って Movie Toolbox を正しく初期化しているにもかかわらず、NewMovie の呼び出し後に、アプリケーションがランダムに一貫性なくクラッシュするという現象が発生しています。何が問題なのでしょうか? A: QuickTime では、NewMovie または NewMovieFromX 関数のいずれかを使ってムービーをインスタンス化する前に、有効なグラフィックスポート(GetGWorld を使って有効なポートを確認できます)が設定されている必要があります。また、ムービーが使用されている間は(あるいは、少なくとも、SetMovieGWorld を使って、同じムービーに対して別の有効なグラフィックスポートが設定されるまで)、グラフィックスポートも有効なままでなければなりません。
注意:
音声のみで映像が含まれていないとしても、すべてのムービーに有効なグラフィックスポートが必要です。
|
NewMovie および NewMovieFromX 関数は、現在のグラフィックスポートを新規に作成されたムービーと関連付けます。そのため、ムービーの作成時にグラフィックスポートが存在しない場合、NewMovie または NewMovieFromX を呼び出すとクラッシュする可能性があります。また、ムービーに関連付けられた現在のグラフィックスポートが削除された場合、以降の QuickTime でのムービー操作はすべて、必ずクラッシュする結果となります。
作成するコードがムービー作成時にポートを必要としない場合(音声のみのムービーを作成する場合など)、NewGWorld (任意のサイズやフォーマットが設定可能)を使用して一時的なオフスクリーングラフィックスワールドを作成した後、ムービーを作成する前に SetGWorld を使って現在のポートを設定します。
この一時的なオフスクリーングラフィックスワールドは、依存しているムービーのすべてが削除されるまで保持しておいてください。
[2004 年 3 月 19 日]
|